// pages/lucky-wheel/play/index.js
Page({

  /**
   * 页面的初始数据
   */
  data: {
    wheelId: '', // 转盘ID
    wheelConfig: {
      title: '幸运转盘',
      items: [],
      // lucky-wheel组件配置
      blocks: [{ padding: '10px', background: '#ffffff' }],
      prizes: [],
      buttons: [
        { radius: '40%', background: '#ffffff' }
      ],
      defaultStyle: {
        fontColor: '#333333',
        fontSize: '14px',
        fontWeight: '500',
        textAlign: 'center',
        background: '#f7f8fa',
        wordWrap: true,
        lengthLimit: '90%'
      },
      defaultConfig: {
        gutter: 0,
        speed: 20,
        accelerationTime: 2500,
        decelerationTime: 2500
      }
    },
    isPlaying: false,
    drawResult: null
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    if (options && options.id) {
      this.setData({
        wheelId: options.id
      });
      this.loadWheelConfig(options.id);
    } else {
      wx.showToast({
        title: '未指定转盘ID',
        icon: 'none'
      });
      // 延迟返回上一页
      setTimeout(() => {
        wx.navigateBack();
      }, 1500);
    }
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {
    // 获取组件实例
    setTimeout(() => {
      this.luckyWheel = this.selectComponent('#lucky-wheel');
      console.log('组件初始化状态:', !!this.luckyWheel);
    }, 100);
  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 加载转盘配置
   */
  loadWheelConfig(id) {
    wx.showLoading({
      title: '加载中',
    });

    wx.getStorage({
      key: 'wheelConfig_' + id,
      success: res => {
        console.log('加载配置成功', res.data);
        
        // 将items转换为prizes
        const prizes = (res.data.items || []).map((item, index) => ({
          id: index,
          name: item.name,
          background: item.color || '#FFFFFF',
          fonts: [{ text: item.name, top: "45%" }]
        }));
        
        // 计算加速和减速时间
        const rotationTime = res.data.rotationTime || 4000;
        const halfTime = rotationTime / 2;
        
        this.setData({
          'wheelConfig.title': res.data.title || '幸运转盘',
          'wheelConfig.items': res.data.items || [],
          'wheelConfig.prizes': prizes,
          'wheelConfig.defaultConfig.accelerationTime': halfTime,
          'wheelConfig.defaultConfig.decelerationTime': halfTime
        });
      },
      fail: err => {
        console.error('加载配置失败', err);
        wx.showToast({
          title: '加载配置失败',
          icon: 'none'
        });
        
        // 延迟返回上一页
        setTimeout(() => {
          wx.navigateBack();
        }, 1500);
      },
      complete: () => {
        wx.hideLoading();
      }
    });
  },

  /**
   * 开始抽奖
   */
  startLottery() {
    if (this.data.isPlaying) {
      return;
    }

    if (!this.luckyWheel) {
      wx.showToast({
        title: '组件未初始化',
        icon: 'none'
      });
      return;
    }

    this.setData({
      isPlaying: true
    });

    // 随机选择一个奖品索引
    const prizes = this.data.wheelConfig.prizes;
    if (!prizes || prizes.length === 0) {
      wx.showToast({
        title: '没有可用的选项',
        icon: 'none'
      });
      this.setData({ isPlaying: false });
      return;
    }
    
    const randomIndex = Math.floor(Math.random() * prizes.length);
    
    // 调用组件的开始方法
    try {
      this.luckyWheel.play();
      
      // 等一会儿再调用stop指定中奖奖品，让转盘先转动一段时间
      setTimeout(() => {
        this.luckyWheel.stop(randomIndex);
      }, 1000);
    } catch (error) {
      console.error('调用转盘方法出错:', error);
      this.setData({ isPlaying: false });
      wx.showToast({
        title: '抽奖失败',
        icon: 'none'
      });
    }
  },

  /**
   * 转盘开始旋转的回调
   */
  onStart() {
    console.log('转盘开始旋转');
    
    // 播放声音
    const innerAudioContext = wx.createInnerAudioContext();
    innerAudioContext.src = '/assets/audio/lottery.mp3';
    innerAudioContext.play();
  },

  /**
   * 转盘停止后的回调
   */
  onEnd(event) {
    console.log('转盘停止, 中奖结果:', event.detail);
    
    const prizeInfo = event.detail.prize;
    
    // 显示中奖结果
    wx.showModal({
      title: '恭喜您',
      content: `获得了: ${prizeInfo.name}`,
      showCancel: false,
      success: () => {
        this.setData({
          isPlaying: false,
          drawResult: prizeInfo
        });
      }
    });
  },

  /**
   * 编辑转盘
   */
  editWheel() {
    wx.navigateTo({
      url: `/pages/lucky-wheel/config/index?id=${this.data.wheelId}`
    });
  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {
    return {
      title: `来抽一次「${this.data.wheelConfig.title}」吧！`,
      path: `/pages/lucky-wheel/play/index?id=${this.data.wheelId}`,
      imageUrl: '/images/share-wheel.png' // 这里需要配置分享图片
    };
  }
})